Excitação harmônica fixa no espaço#
Nesta seção o equacionamento realizado considerou a aplicação de uma força harmônica atuando apenas na direção \(x\) excitando o sitema conforme proposto no livro texto da disciplina, “Rotordynamics Prediction in Engineering, Second Edition”, Lalanne and Ferraris [1998].
Foram calculadas as amplitudes de vibração em função da velocidade de rotação
Importando módulos e configurando o ambiente#
'''
Bibliotecas de terceira parte
'''
import numpy as np
import plotly.graph_objects as go
import plotly.io as pio
pio.renderers.default = "notebook_connected"
'''
Biblioteca criada para a realização das análises dinâmicas
no contexto da disciplina
'''
import rotor_analysis as rd
'''
Configurando pint.Quantity
'''
Q_ = rd.Q_
Definindo parâmetros#
# Material instances and properties
steel = rd.Material(name='Steel',
density=Q_(7800, 'kg/m^3'),
young_modulus=Q_(2e11,"Pa"))
# Shaft
L = Q_(0.4, 'm')
shaft = rd.Shaft(outer_radius=Q_(0.01, 'm'),
inner_radius=Q_(0.0, 'm'),
length=L,
material=steel)
# Disc
disc = rd.Disc(outer_radius=Q_(0.150, 'm'),
inner_radius=Q_(0.010, 'm'),
length=Q_(0.030, 'm'),
material=steel,
coordinate=L/3)
# Rotor
rotor = rd.Rotor(shaft, disc)
speed_range = np.linspace(0, 9000, 101)
def A1_harm(speed, *args):
'''Compute the displacemente aplitude of the rotor with an harmonic
excitation fixed in space
Args:
speed (function): Rotational speed in RPM.
F0 (float): Asynchronous force magnitude
f (float): Excitation frequency
Remarks:
len(args) shall be equals to 2.
'''
F0, f = args
omega = 2 * np.pi * f
k1, k2 = rotor.stiffness
m = rotor.mass
spin = speed / 60 * 2 * np.pi
a = rotor.a
div = (k1 - m * omega**2) * (k2 - m * omega**2) - a**2 * spin**2 * omega**2
return F0 * rotor.f(L.m/3*2) * (k2 - m * omega**2 ) / div
def A2_harm(speed, *args):
'''Compute the displacemente aplitude of the rotor with an harmonic
excitation fixed in space
Args:
speed (function): Rotational speed in RPM.
F0 (float): Asynchronous force magnitude
f (float): Excitation frequency
Remarks:
len(args) shall be equals to 2.
'''
F0, f = args
omega = 2 * np.pi * f
k1, k2 = rotor.stiffness
m = rotor.mass
spin = speed / 60 * 2 * np.pi
a = rotor.a
div = (k1 - m * omega**2) * (k2 - m * omega**2) - a**2 * spin**2 * omega**2
return --a * spin * omega * F0 * rotor.f(L.m/3*2) / div
Órbita interativa#
response = rd.plot_vibration_amplitude(A1_harm, A2_harm)
rd.interactive_orbit_fixed_speed(
response,
A1_harm,
A2_harm,
4000,
1,
37
)